package la.foton.atividade.controller;

import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.RequestScoped;
import la.foton.atividade.entity.Categoria;
import la.foton.atividade.service.CategoriaService;
import org.primefaces.event.RowEditEvent;

@ManagedBean(name = "categoriaBean")
@RequestScoped
public class CategoriaBean extends BaseBean {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
   @ManagedProperty("#{categoriaService}")
   private CategoriaService categoriaService;
   private Categoria categoria;
   private List<Categoria> listAll;

	public CategoriaBean() {
	}

   @PostConstruct
   private void init()
   {
      categoria = new Categoria();
   }

	public void incluir() {
      categoriaService.create(categoria);
      atualizarListaCategorias();
		clean();
      addInfoMessage("Categoria criado com sucesso.");
	}

   public List<Categoria> getListAll()
   {
		if (listAll == null) {
         atualizarListaCategorias();
		}
		return listAll;
	}

   public void atualizarListaCategorias()
   {
      listAll = categoriaService.getAll();
	}

	public void clean() {
      if (categoria != null)
      {
         categoria.setId(null);
         categoria.setNome("");
      }
	}

	public void onEdit(RowEditEvent event) {
      Categoria categoria = (Categoria) event.getObject();
      // Categoria prj = null;
      categoriaService.update(categoria);
      atualizarListaCategorias();
      addInfoMessage("Categoria" + " editado");
	}

	public void onCancel(RowEditEvent event) {
      Categoria categoria = (Categoria) event.getObject();
      categoriaService.deleteById(categoria);
      atualizarListaCategorias();
      addInfoMessage(categoria.getNome() + " excluido");
	}

   public CategoriaService getCategoriaService()
   {
      return categoriaService;
	}

   public void setCategoriaService(CategoriaService categoriaService)
   {
      this.categoriaService = categoriaService;
	}

   public Categoria getCategoria()
   {
      return categoria;
	}

   public void setCategoria(Categoria categoria)
   {
      this.categoria = categoria;
	}

}
